﻿//using System;
//using System.Collections.Generic;
//using System.IO;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;
//using ZQNB.BaseLib.UI.Models;
//using ZQNB.Common;

//namespace ZQNB.BaseLib.UI
//{
//    public class WidgetMeta
//    {
//        public string Name { get; set; }
//        public string PartialViewName { get; set; }
//    }

//    public interface IWidgetMetaHelper
//    {
//        /// <summary>
//        /// 从App_Data下读取WidgetMeta.json
//        /// </summary>
//        /// <returns></returns>
//        List<WidgetMeta> GetWidgetMetas();

//        /// <summary>
//        /// 从物理文件读取部件
//        /// 同步WidgetMeta.json
//        /// </summary>
//        void SyncWidgetMetas(List<WidgetMeta> metas);
//    }

//    public class WidgetMetaHelper : IWidgetMetaHelper
//    {
//        private readonly WidgetDetector _widgetDetector;

//        public WidgetMetaHelper(WidgetDetector widgetDetector)
//        {
//            _widgetDetector = widgetDetector;
//        }

//        public List<WidgetMeta> GetWidgetMetas()
//        {
//            var widgets = new List<WidgetMeta>();

//            var basePath = MyPathHelper.MapIISServerPath("~/");
//            List<string> files = MyIOHelper.GetFiles(basePath, "_*.cshtml", SearchOption.AllDirectories);

//            foreach (var file in files)
//            {
//                if (_widgetDetector.IsWidget(file))
//                {
//                    var widgetMeta = new WidgetMeta();
//                    widgetMeta.PartialViewName = file.Replace(basePath, "~/").Replace("\\", "/");
//                    widgetMeta.Name = _widgetDetector.GetWidgetInfo(file);
//                    widgets.Add(widgetMeta);
//                }
//            }

//            return widgets;
//        }

//        public void SyncWidgetMetas(List<WidgetMeta> metas)
//        {
//            throw new NotImplementedException();
//        }
//    }

//    public class WidgetDetector
//    {
//        /// <summary>
//        /// 判断是否是部件
//        /// @* Widget : xxx *@
//        /// </summary>
//        /// <param name="filePath"></param>
//        /// <returns></returns>
//        public bool IsWidget(string filePath)
//        {
//            var lines = File.ReadLines(filePath).ToList();
//            for (int i = 0; i < lines.Count; i++)
//            {
//                var text = lines[i].Trim();
//                if (text == "")
//                {
//                    continue;
//                }
//                if (text.StartsWith("@*") && text.EndsWith("*@"))
//                {
//                    if (text.NbContains("widget"))
//                    {
//                        return true;
//                    }
//                }
//            }
//            return false;
//        }

//        /// <summary>
//        /// 获取Widget信息
//        /// @* Widget : xxx *@
//        /// </summary>
//        /// <param name="filePath"></param>
//        /// <returns></returns>
//        public string GetWidgetInfo(string filePath)
//        {
//            string name = "";
//            var lines = File.ReadLines(filePath).ToList();
//            for (int i = 0; i < lines.Count; i++)
//            {
//                var text = lines[i].Trim();
//                if (text == "")
//                {
//                    continue;
//                }
//                if (text.StartsWith("@*") && text.EndsWith("*@"))
//                {
//                    if (text.NbContains("widget"))
//                    {
//                        var temp = text.Replace("@*", "").Replace("*@", "").Trim(); ;
//                        // Widget : xxx
//                        name = temp.Split(':')[1].Trim();
//                    }
//                }
//                break;
//            }
//            return name;
//        }
//    }

//    public interface ILayoutSettingService
//    {
//        List<Widget> GetDefaultWidgets();

//        List<Widget> GetDefaultWidgetsFromArea(string areaName);

//        bool SaveDefaultWidgets(string appName, List<Widget> widgets);


//        bool SaveDefaultWidgets(List<Widget> widgets);
//        List<Widget> GetLeftWidgets(string appName, string layoutName);

//        List<Layout> GetAllDefaultLayouts();
//        bool SaveAllDefaultLayouts(List<Layout> layouts);

//        Layout GetLayout(string appName, string layoutName = "Default");
//        bool SaveLayout(string appName, Layout layout, string layoutName = "Default");
//    }
//}
